The background of the present disclosure is hereinafter introduced with the discussion of techniques relating to its context. However, even when this discussion refers to documents, acts, artifacts and the like, it does not suggest or represent that the discussed techniques are part of the prior art or are common general knowledge in the field relevant to the present disclosure.
The present disclosure relates to the information technology field. More specifically, this disclosure relates to the maintenance of multi-tenant software programs.
Software programs are routinely subject to maintenance operations (after their deployment to a production environment); for example, patches may be applied to correct bugs or upgrades may be applied to improve operation of the software programs from time to time.
However, the performance of the software programs is adversely affected during their maintenance. Indeed, for this purpose the software programs are generally to be put off-line (for example, when a re-booting of corresponding computing machines is required to make the maintenance operations effective); this causes downtimes of the software programs in which they are completely unavailable (commonly referred to as maintenance windows). In any case, the maintenance of the software programs (even when it may be performed on-line) significantly slows down their operation.
When the software programs are of multi-tenant type, any maintenance thereof involves a temporary disruption (or at least a reduction of quality) of the corresponding service. Indeed, in this case each software program is designed to serve multiple users, or tenants, at the same time by each instance thereof; for this purpose, the software program partitions the individual data of the tenants logically, so that each tenant is provided with a virtual software program emulating a dedicated instance thereof. Therefore, during the maintenance of each instance of the software program the service provided to the corresponding tenants is unavailable (or its responsiveness is reduced). The disruption (or low quality) of the service provided by these software programs may be unacceptable in specific computing environments wherein a high availability thereof is required. A typical example is in cloud (computing) environments wherein the software programs are supplied as services, for example, according to a Software-as-a-Service (SaaS) model. In this case, the software programs are made available to their tenants by cloud providers, which provision, configure and release corresponding computing resources upon request (so that their actual implementation is completely opaque thereto). This de-coupling of the cloud services from the actual computing resources that implement them provides the illusion of an infinite capacity thereof and improves their exploitation, especially for high-peak load conditions (by means of economies of scale); moreover, the tenants are now relived of the management of these computing resources (for example, their installation and maintenance), and they may perform tasks (on a pay-per-use basis) that were not feasible previously because of their cost and complexity (especially for individuals and small companies).
In this case, for each (production) computing machine wherein an instance of the (multi-tenant) software program runs, it might be possible to provide a (backup) computing machine that serves its tenants during any maintenance of the instance of the software program in the production computing machine.
However, the backup computing machines involve a corresponding waste of computing resources; moreover, this duplicates the maintenance operations to be performed, with the risk of misalignments among the production computing machines and the backup computing machines.